查看原文
其他

SpringBoot中yml配置文件:定义list集合、数组及注意事项

SpringForAll 2022-07-05
关注我,回复关键字“2022面经”
领取2022大厂Java后端面经

1.在平时的yml配置文件中,我们经常使用到配置基本数据类型的字符串,比如配置日志文件的写法如下:

# 配置日志输出级别
logging:
  # 指定logback配置文件的位置 
  config: classpath:logback-spring.xml
  # 文件日志要输出的路径
  path: E:/logs/springboot_server
  # 日志的输出级别
  level:
    root: info

获取属性值的话可以通过@value 注解来实现,如下:

@Value("${logging.path}")
private String path;    // 获取日志文件的输出路径

2.下面说一下如何在yml配置文件中定义list集合、对象集合、数组以及map集合等

如果您正在学习Spring Boot,那么推荐一个连载多年还在继续更新的免费教程:http://blog.didispace.com/spring-boot-learning-2x/


2.1定义list集合

# 拦截器路径拦截或者不拦截配置
interceptorconfig:
  path:
    #该路径下任何类型请求均拦截
    include:
      - /api/v1/token/api_token
      - /api/v1/yibaotong/save

或者写成

# 拦截器路径拦截或者不拦截配置
interceptorconfig:
  path:
    #该路径下任何类型请求均拦截
    include: [/api/v1/token/api_token,/api/v1/yibaotong/save]

这里需要注意的是,定义list集合不能用@value注解来获取list集合的所有值,需要定义一个配置类bean,然后使用    @ConfigurationProperties注解来获取list集合值,做法如下:

@Data
@Component
@ConfigurationProperties(prefix = "interceptorconfig.path"// 配置文件的前缀
public class InterceptorPathBean
{
    /*
     * 需要拦截的路径
     */

    private List<String> include;
}

如果使用@value注解会报错;

2.2 定义对象list集合,首先创建一个user对象如下:

@Data
public class User implements Serializable
{  
        
    private static final long serialVersionUID = 1L;
    
    private String appId;
    
    private String password;
 
}

然后yml配置文件的写法如下:

jwt:
  userlist:
    - appId: YiBaoTong
      password: 123456
    - appId: ZhiKe
      password: 123456

定义配置bean使用@ConfigurationProperties注解获取对象集合值:

@Data
@Component
@ConfigurationProperties(prefix = "jwt"// 配置 文件的前缀
public class JwtConfigBean
{
    /**
     * 用户列表
     */

    private List<User> userlist;
}

2.3 定义数组,格式如下:

interceptorconfig:
  path:
    includes: /api/v1,/api/v2  #注意要用逗号分隔开

可以通过@value注解获取数组值,如下:

 @Value("${interceptorconfig.path.includes}")
 private String[] includes;

也可以通过创建配置类bean,使用@ConfigurationProperties注解获取,如下:

@Data
@Component
@ConfigurationProperties(prefix = "interceptorconfig.path"// 配置 文件的前缀
public class InterceptorPathBean
{  
    private String[] includes;
}

2.4 定义map集合,如下:

interceptorconfig:
  path:
    maps: {name: 小明,age: 24}

或者写成:

interceptorconfig:
  path:
    maps:
      name: 小明
      age: 24

通过创建配置类bean,使用@ConfigurationProperties注解获取map值,如下:

@Data
@Component
@ConfigurationProperties(prefix = "interceptorconfig.path"// 配置 文件的前缀
public class InterceptorPathBean
{
    private Map<String , String> maps;
}

以上就是spring boot yml配置文件定义基本数据类型和引用数据类型的方式

来源:https://blog.csdn.net/you18131371836

/article/details/104839901



END


关注下方公众号,回复【JAVA宝典】
获取最新免费Java资料大全


往期推荐

SpringBoot事件监听的4种实现方式

Logback这样配置,性能提升10倍!

阿里云盘之资源大大大福利!

SpringBoot + Elasticsearch7.6实现简单查询及高亮分词查询

一个“扛住100亿次请求”的春晚红包系统

一个拿来即用的SpringBoot开源ERP系统,赶紧学习收藏了!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存